package com.zz.common.datasource;

import com.zz.common.config.Config;
import com.zz.common.entity.ClientConfig;
import com.zz.common.entity.User;
import com.zz.common.entity.UserClient;

import java.util.List;

/**
 * 数据源
 *
 * @author zz
 */
public interface DataSource {

    /**
     * 初始化
     */
    void init();

    /**
     * 清空
     */
    void clear();

    /**
     * 用户授权
     * @return
     */
    User authorize(String username, String password);

    /**
     * 获取用户客户端信息
     * @param userId
     * @return
     */
    List<UserClient> getUserClient(String userId);

    /**
     * 获取用户配置的设备代理详情信息
     * @param clientId
     * @return
     */
    List<ClientConfig> getClientConfig(String clientId);

    /**
     * 根据id获取用户信息
     * @param userId
     * @return
     */
    User getUserById(String userId);

    /**
     * 根据id获取用户客户端信息
     * @param clientId
     * @return
     */
    UserClient getUserClientById(String clientId);

    /**
     * 根据id获取用户配置的设备代理详情信息
     * @param configId
     * @return
     */
    ClientConfig getClientConfigById(String configId);

    ClientConfig getClientConfigIdByDomain(String domain);

    /**
     * 修改连接配置
     * @param config
     */
    void updateConfig(ClientConfig config);
}
